Make catalog delivery facts authoritative - #399
Merged
schickling-assistant merged 5 commits intoAug 31, 2026
Merged
Conversation
agent-identity: dev3.direct.omp.jmg9x29x agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.0.11 agent-runtime: OMP 18.0.11 tooling-profile: dotfiles@2161b9c
agent-identity: dev3.direct.omp.jmg9x29x agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.0.11 agent-runtime: OMP 18.0.11 tooling-profile: dotfiles@2161b9c
agent-identity: dev3.direct.omp.jmg9x29x agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.0.11 agent-runtime: OMP 18.0.11 tooling-profile: dotfiles@2161b9c
schickling-assistant
marked this pull request as ready for review
August 30, 2026 23:04
agent-identity: dev3.direct.omp.jmg9x29x agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.0.11 agent-runtime: OMP 18.0.11 tooling-profile: dotfiles@2161b9c
agent-identity: dev3.direct.omp.jmg9x29x agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.0.11 agent-runtime: OMP 18.0.11 tooling-profile: dotfiles@2161b9c
This was referenced Aug 31, 2026
schickling
pushed a commit
that referenced
this pull request
Aug 31, 2026
* fix(validate): retired declarations leave the root slot (#402) Root counting in validate's root-count invariant and the graph's admitted topology counted every supervisor-less spec, so legacy `retired #true` tombstones held a host's root slot and the live dev3 catalog failed with "found 8". The folded desired-state model already maps both retirement spellings to AgentDesiredState::Retired; both consumers now share one predicate (supervisor_chain::is_counted_root) so a retired declaration never counts, a suspended root still does, and zero counted roots remains an error. The graph declarations view folds legacy `retired #true` to desiredState "retired"; an absent lifecycle stays null (lowers to running). Also repairs six tests/validate.rs expectations to the #399 semantics (that target is not CI-gated, so the drift shipped unnoticed): a dangling supervisor is now an error, driver/deliver conflicts refuse at parse time, native drivers require delivery-readiness, and fixtures satisfy the one-root invariant. agent-identity: dev3.direct.omp.wk3aavmh agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.0.11 agent-runtime: OMP 18.0.11 tooling-profile: dotfiles@1defc60 * fix(validate): reject active chains rooted at a retired declaration Review finding on #405 (Codex P1): with retired declarations excluded from root counting, one active root plus a retired root still supervising an active worker validated clean — root-count saw exactly one counted root while the worker's chain terminated at the tombstone, and the graph published complete: true with two disconnected trees. An active agent's chain must now terminate at a counted root (retired-root error); retired chains under a retired root stay legal. Live dev3 catalog verified: zero new errors beyond the pre-existing delivery-readiness ones (#406). agent-identity: dev3.direct.omp.wk3aavmh agent-persona: generalist agent-supervisor: unavailable agent-tool: OMP agent-tool-version: 18.0.11 agent-runtime: OMP 18.0.11 tooling-profile: dotfiles@1defc60
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Make st2 the admitted source of truth for agent topology, native delivery ownership/readiness, retirement settlement, and Codex delivery-critical protocol compatibility.
Why
Downstream orchestration currently has to reconstruct graph validity and delivery eligibility from partial declarations. That duplicates policy and can diverge at the live migration boundary. Codex admission also used release strings where the actual dependency is the experimental app-server schema.
What changed
delivery-readinessdeclarations paired with explicit native session drivers; Ding remains restricted to opaque non-harness PTYsst2.catalog-graph.v2; duplicate, missing-parent, cycle, depth, and per-host root-count faults make the graph incomplete and null every affected topology fieldVerification
nix develop -c cargo test -p agent-spec --test discovery delivery_readiness -- --nocapturenix develop -c cargo test --test validate native_ -- --nocapturenix develop -c cargo test --test catalog_graph graph_exposes_admitted_topology_and_delivery_readiness_facts -- --nocapturenix develop -c cargo test --test catalog_graph graph_rejects_missing_cycle_depth_and_per_host_root_count -- --nocapturenix develop -c cargo test --test run retired_agent_idempotently_archives_every_inbox_message -- --nocapturenix develop -c cargo test --lib codex_app_server::tests::protocol_admission_proves_each_method_payload_linkage -- --nocapturenix develop -c cargo test --lib codex_app_server::tests::unknown_thread_status_remains_a_hold_not_a_terminal_system_error -- --nocapturenix develop -c cargo test --lib codex_app_server::tests::installed_codex_protocol_fingerprint_is_admitted -- --ignored --nocapturegit diff --checkaxe vrs check --profile strict docs/vrswas also run. It remains red on pre-existing repository-wide broken local links and legacy decision/delta/experiment shape violations; none points at the edited R35-R38 material.Rollout
No deployment or merge in this PR. Downstream Axe/catalog consumers can pin commit
060cbb7730ab92d13d0ef768cdd5068655ffe0a6and remove their duplicate graph validation before the coordinated live migration.Deferred acceptance
Posted on behalf of @schickling
agent_identitysessionagent_personaagent_supervisoragent_toolagent_tool_versionagent_runtimetooling_profile